$(document).ready(function () {
  /**
   * 角色列表表格显示控制
   */
  $("#role-table-list").bootstrapTable({
    url: "/admin/role/list",
    method: 'POST',
    datatype: "json",
    contentType: "application/x-www-form-urlencoded",
    striped: true,                      //是否显示行间隔色
    cache: false,                       //是否使用缓存，默认为true
    pagination: true,                   //是否显示分页（*）
    sortable: true,                     //是否启用排序
    sortOrder: "asc",                   //排序方式
    sidePagination: "server",           //分页方式：client客户端分页，server服务端分页
    pageNumber: 1,                      //初始化加载第一页，默认第一页,并记录
    pageSize: 3,                        //每页的记录行数（*）
    pageList: [10, 30, 50, 100],        //可供选择的每页的行数
    search: false,                      //是否显示表格搜索
    strictSearch: true,
    showColumns: false,                  //是否显示所有的列（选择显示的列）
    showRefresh: false,                  //是否显示刷新按钮
    minimumCountColumns: 2,             //最少允许的列数
    clickToSelect: true,                //是否启用点击选中行
    uniqueId: "ID",                     //每一行的唯一标识，一般为主键列
    showToggle: false,                   //是否显示详细视图和列表视图的切换按钮
    cardView: false,                    //是否显示详细视图
    detailView: false,                  //是否显示父子表
    //得到查询的参数
    queryParams: function (params) {
      //这里的键的名字和控制器的变量名必须一直，这边改动，控制器也需要改成一样的
      var temp = {
        rows: params.limit,                         //页面大小
        page: (params.offset / params.limit) + 1,   //页码
        sort: params.sort,      //排序列名
        sortOrder: params.order //排位命令（desc，asc）
      };
      return temp;
    },
    columns: [{
      checkbox: true,
      visible: true                  //是否显示复选框
    }, {
      field: 'id',
      title: '角色ID'
    }, {
      field: 'role',
      title: '角色编码'
    }, {
      field: 'roleName',
      title: '角色名'
    }, {
      field: 'description',
      title: '描述'
    }, {
      field: 'available',
      title: '是否可见'
    }, {
      field: 'id',
      title: '操作',
      width: 120,
      align: 'center',
      valign: 'middle',
      formatter: actionFormatter
    }],
    onLoadSuccess: function () {
    },
    onLoadError: function () {
      // showTips("数据加载失败！");
      console.log("error");
    }
  });

  /**
   * 新增用户
   */
  $("#add_form").bootstrapValidator({
    message: 'This value is not valid',
    feedbackIcons: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },
    fields: {
      role: {
        validators: {
          notEmpty: {
            message: '角色编码不能为空'
          }
        }
      },
      roleName: {
        validators: {
          notEmpty: {
            message: '角色名不能为空1'
          }
        }
      }
    }
  }).on('success.form.bv', function (e) {
    // 阻止表单提交
    e.preventDefault();
    // 获取表单实例
    var $form = $(e.target);
    // 获取bootstrap validator实例
    // ajax 异步
    $.post($form.attr('action'), $form.serialize(), function (result) {
      console.log(result);
      if (result.code == 200) {
        showMsg("success");
        // 手动关闭模态框
        $("#modal_add_form").modal("hide");
        // 清空表单数据
        $('#add_form')[0].reset();
        //无参数刷新
        $("#role-table-list").bootstrapTable('refresh');
      }
    }, 'json');
  }).on('hidden.bs.modal', function () {
    $("#modal_add_form").data('bootstrapValidator').resetForm(true);
    this.bindValidation();//要重新绑定验证
  });

  /**
   * 修改用户
   */
  $("#edit_form").bootstrapValidator({
    message: 'This value is not valid',
    feedbackIcons: {
      valid: 'glyphicon glyphicon-ok',
      invalid: 'glyphicon glyphicon-remove',
      validating: 'glyphicon glyphicon-refresh'
    },
    fields: {
      role: {
        validators: {
          notEmpty: {
            message: '角色编码不能为空'
          }
        }
      },
      roleName: {
        validators: {
          notEmpty: {
            message: '角色名不能为空'
          }
        }
      }
    }
  }).on('success.form.bv', function (e) {
    // 阻止表单提交
    e.preventDefault();
    // 获取表单实例
    var $form = $(e.target);
    // 获取bootstrap validator实例
    // ajax 异步
    $.post($form.attr('action'), $form.serialize(), function (result) {
      console.log(result);
      if (result.code == 200) {
        showMsg("success");
        // 手动关闭模态框
        $("#modal_edit_form").modal("hide");
        //无参数刷新
        $("#role-table-list").bootstrapTable('refresh');
      }
    }, 'json');
  }).on('hidden.bs.modal', function () {
    $("#modal_edit_form").data('bootstrapValidator').resetForm(true);
    this.bindValidation();//要重新绑定验证
  });
});

// to_edit页面
function to_edit(id, obj) {
  var $td = $(obj).parents('tr').children('td');
  var td_id = $td.eq(1).text();
  var td_role = $td.eq(2).text();
  var td_roleName = $td.eq(3).text();
  var td_description = $td.eq(4).text();

  $("#id_edit").val(td_id);
  $("#role_edit").val(td_role);
  $("#roleName_edit").val(td_roleName);
  $("#description_edit").val(td_description);
}

// to_grant页面
function to_grant(id, obj) {
  var data;
  $("#id_grant").val(id);
  var url = "/admin/permission/listNodes";
  $.post(url, {roleId: id},
      function (result) {
        console.log(result);
        data = result;
        var $checkableTree = $('#treeview').treeview({
          data: data,
          showIcon: false,
          showCheckbox: true
        });
      },
      'json'
  );
}

function grant() {
  var $form = $("#grant_form");
  var checkedNodes = $('#treeview').treeview('getChecked');
  var checkedIds = checkedNodes.map(function (node) {
    return node.id;
  })
  $.ajax({
    url: $form.attr("action"),
    type: "post",
    data:{
      id: $("#id_grant").val(),
      nodeId: checkedIds
    },
    traditional: true,
    success:function (data) {
      if (data.code == 200) {
        showMsg("success");
        // 手动关闭模态框
        $("#modal_grant_form").modal("hide");
      }
    }
  });
}

function del(id) {
  var url = "/admin/role/del";
  $.post(url, {id: id},
      function (result) {
        console.log(result);
        if (result.code == 200) {
          showMsg("success");
          //无参数刷新
          $("#role-table-list").bootstrapTable('refresh');
        }
      },
      'json'
  );
}

ActionBtn.prototype.grant = function (id) {
  this.value += "<button data-toggle='modal' href='#modal_grant_form' class='btn btn-success btn-xs' onclick='to_grant("
      + id + ", this)'><i class='fa fa-gears'></i></button> ";
  return this;
};

//操作栏的格式化
function actionFormatter(value, row, index) {
  var id = value;
  var result = new ActionBtn();
  result.grant(id).edit(id).del(id);
  return result;
}

